/* 定义 Flex 扫描模式 */
%option noyywrap
%option yylineno
%option never-interactive
%option noinput
%{

#include "command_utils.h"

// 添加以下两行以忽略未使用的函数警告
#pragma GCC diagnostic ignored "-Wunused-function"
#pragma GCC diagnostic push

map<string, string> column_type_name;
string type_tmp;
%}
/*语法create table xxx (col_type col_name1, col_type col_name2, … );*/
/*输入为（）以及其中的内容*/
TYPE int|string|float|double
COLUMN_NAME [a-zA-Z0-9_]*

%%
{TYPE} {type_tmp = create_table_text;}
{COLUMN_NAME} {column_type_name[create_table_text] = type_tmp;}
[ \t\n]+    ;  /* 忽略空白 */
. ; /* 忽略其他字符 */
<<EOF>>         { return 0; /* 确保 create_table_lex 正常终止 */ }
%%
void init_flex_string_(const char *str) {
    YY_BUFFER_STATE bp = create_table__scan_string(str);
    if (!bp) {
        error("Failed to create buffer for input string.");
        return;
    }
    create_table_lex(); // 开始扫描
    create_table__delete_buffer(bp); // 删除缓冲区
}
map<string,string> create_table_helper(string args) {
       init_flex_string_(args.c_str());
       return column_type_name;
}

// 恢复原来的警告设置
#pragma GCC diagnostic pop
